#include <string>
#include <iostream>
#include <sstream>
#include <vector>
using namespace std;
/*
    循环数的判断
    1. 输入的是字符串，首先将字符串的前导0去掉（注意，含有前导0依然可以是循环数，比如011->110）
    2. 由于字符串很长，直接转换为整数会溢出，因此，应该一点一点的进行乘法转化，即大数乘法，在乘法过程中也要不断的转换回字符串，不然依然会溢出
    3. 对处理结束后的字符串进行遍历，找到之前的前导，然后将其后面的全部截取出来放到开头位置，判断是否和之前的一样
    4. 注意，如果在for循环里面，是i>=0,i--时不能将i定义为size_t
*/
string multi(string s, int j)
{
    string res = "";
    int temp, carry = 0;
    for (int i = s.length() - 1; i >= 0; i--)
    {
        temp = j * (s[i] - '0') + carry;
        carry = temp / 10; // carry表示是否进位
        temp = temp % 10;
        res.insert(0, to_string(temp));
    }
    return res;
}
bool loop_num(string s1, string s2)
{
    int temp;
    for (size_t i = 0; i < s1.size(); i++)
    {
        if (s2[i] == s1[0])
        {
            temp = s2.size();
            s2.insert(0, s2.substr(i, temp - i)); // s2.substr 第二个参数不是结束位置，而是长度
            s2.erase(temp, temp - i);             //
            break;
        }
    }
    if (s1 == s2)
    {
        return true;
    }
    else
        return false;
}
int main()
{
    string s, s1, s2;
    int n;
    cin >> s;
    n = s.length();
    bool flag;
    for (size_t i = 1; i <= n; i++)
    {
        s1 = multi(s, i); // 进行大数乘法
        flag = loop_num(s, s1);
        if (!flag)
        {
            cout << s << " is not cyclic" << endl;
            break;
        }
    }
    if (flag)
    {
        cout << s << " is cyclic" << endl;
    }

    return 0;
}